#include "include.h"

_MB_IBUS_T MB_IBus;

void MeBsp_IBus_Init(void)
{
  memset(&MB_IBus, 0, sizeof(MB_IBus));

  MB_IBus.fMultipleAdVal = (MB_ADC_REF*100.0f)/MB_ADC_12BIT_VAL/MB_IBUS_RSHUNT/MB_IBUS_AMPGAIN;

  MB_IBus.wGetOffsetTimeCnt = 1000;
}

void MeBsp_IBus_GetOffsetVal(void)
{
  if ( MB_IBus.wGetOffsetTimeCnt ) {
    MB_IBus.wGetOffsetTimeCnt--;
    MB_IBus.wOffsetSumVal += MB_AD_IBUS_VAL;
    MB_IBus.wOffsetVal = MB_IBus.wOffsetSumVal >> 4;
    MB_IBus.wOffsetSumVal -= MB_IBus.wOffsetVal;
  }
  else {
    MB_IBus.bGetOffsetOKFlag = 1;
  }
}

void MeBsp_IBus_Hanl(void)
{
  if ( MB_IBus.bGetOffsetOKFlag ) {
    if ( MB_AD_IBUS_FLT_VAL <= MB_IBus.wOffsetVal ) {
      MB_IBus.wCurrVal = 0;
    }
    else {
      MB_IBus.wCurrVal = (float)(MB_AD_IBUS_FLT_VAL * MB_IBus.fMultipleAdVal);
    }
  }
  else {
    MB_IBus.wCurrVal = 0;
  }
  
}

